Camofox:给 AI Agent 用的反指纹浏览器

Camofox:给 AI Agent 用的反指纹浏览器

AI Agent 需要上网,但 Playwright 被封、Headless Chrome 被指纹识别、Stealth 插件本身就是指纹。Camofox 换了个思路——直接在 C++ 层伪造一切。

一、它是什么?

Camofox(全称 camofox-browser)是一个开源的反检测浏览器服务器,专门为 AI Agent 设计。它把 Camoufox(一个在 C++ 层面做指纹伪造的 Firefox 分支)包装成了 REST API,让 Agent 可以像调接口一样操控一个"看起来完全正常"的浏览器。

项目地址:https://github.com/jo-inc/camofox-browser

核心定位很清晰:让 AI Agent 能访问真实的 Web,不被反爬系统拦截

二、为什么需要它?

如果你做过任何涉及浏览器自动化的事情,你一定遇到过这些问题:

问题的根源在于:JavaScript 层面的伪造,JavaScript 层面就能检测到

Camofox 的底层引擎 Camoufox 选择了不同的路线——直接修改 Firefox 的 C++ 源码。navigator.hardwareConcurrency、WebGL renderer、AudioContext 输出、屏幕几何参数、WebRTC——全部在浏览器引擎内部就已经被替换了,JavaScript 拿到的就是"真实"的值,因为从 JS 的视角看,这些值确实是浏览器原生返回的。

没有 shim,没有 wrapper,没有 prototype 污染。

三、核心特性

C++ 级别的反检测

这是 Camofox 最核心的卖点。Camoufox 基于 Firefox,修改了浏览器引擎的 C++ 实现:

能过 Google、Cloudflare 和大多数主流反机器人系统。

为 Agent 优化的 API 设计

Camofox 不是让你手动操作浏览器的——它是给 AI Agent 调用的。API 设计围绕这个场景做了很多优化:

资源占用极低

空闲时内存占用约 40MB。浏览器实例在 5 分钟无活动后自动关闭,下次请求时重新启动。设计目标是能跑在树莓派或 $5 VPS 上。

会话隔离与持久化

代理与 GeoIP

支持简单代理和 Backconnect 旋转代理(Decodo、Bright Data、Oxylabs 等)。配置代理后,Camoufox 的 GeoIP 会自动将 locale、timezone、geolocation 设置为与代理出口 IP 一致,指纹和网络层完全匹配。

四、快速上手

本地运行

git clone https://github.com/jo-inc/camofox-browser
cd camofox-browser
npm install
npm start  # 首次运行会下载 Camoufox (~300MB)
# → http://localhost:9377

Docker

# 构建并启动(自动检测 CPU 架构)
make up

# 停止
make down

基本使用

# 创建标签页
curl -X POST http://localhost:9377/tabs \
  -H 'Content-Type: application/json' \
  -d '{"userId": "agent1", "url": "https://example.com"}'

# 获取无障碍快照(带元素引用)
curl "http://localhost:9377/tabs/TAB_ID/snapshot?userId=agent1"
# → { "snapshot": "[button e1] Submit  [link e2] Learn more", ... }

# 通过 ref 点击元素
curl -X POST http://localhost:9377/tabs/TAB_ID/click \
  -H 'Content-Type: application/json' \
  -d '{"userId": "agent1", "ref": "e1"}'

# 使用搜索宏
curl -X POST http://localhost:9377/tabs/TAB_ID/navigate \
  -H 'Content-Type: application/json' \
  -d '{"userId": "agent1", "macro": "@google_search", "query": "best coffee beans"}'

五、架构设计

Browser Instance (Camoufox)
└── User Session (BrowserContext) - 隔离的 cookies/storage
    ├── Tab Group (sessionKey: "conv1")
    │   ├── Tab (google.com)
    │   └── Tab (github.com)
    └── Tab Group (sessionKey: "conv2")
        └── Tab (amazon.com)

关键设计决策:

六、为什么选 Firefox 而不是 Chromium?

这是 Camoufox 的一个重要设计选择,值得展开说:

  1. Chrome ≠ Chromium:Chrome 有很多 Chromium 没有的闭源功能,反爬系统可以检测你用的是 Chromium 而不是 Chrome。而 Chrome 是闭源的,打补丁困难得多
  2. CDP 是重灾区:Chrome DevTools Protocol 被广泛使用,也是反检测系统重点监控的目标。Firefox 的 Juggler 协议在更底层运行,JS 泄露更少
  3. Firefox 的指纹研究更成熟:Tor 项目、Arkenfox、CreepJS 等大量反指纹研究都基于 Firefox
  4. 沙箱隔离:Juggler 的内部 Page Agent JavaScript 运行在沙箱世界中,页面几乎无法检测到 Playwright 的存在

七、跟其他方案的对比

特性 Camofox Playwright + Stealth Headless Chrome 商业指纹浏览器
反检测层级 C++ 引擎层 JavaScript 注入 各家不同
过 Cloudflare 经常失败 大多可以
过 Google 不稳定 大多可以
为 Agent 设计 ✅ REST API 需要自己封装 需要自己封装 通常面向人工操作
Token 效率 高(无障碍快照) 低(完整 DOM) 低(完整 DOM) 不适用
开源 ✅ MIT 大多闭源
资源占用 ~40MB 空闲 取决于浏览器 取决于浏览器 通常较重

八、适用场景

不适合的场景

九、注意事项

十、总结

Camofox 解决了一个很具体的问题:让 AI Agent 能像正常人一样浏览网页

它的技术路线很清晰——不在 JavaScript 层面做手脚,而是直接改浏览器引擎的 C++ 实现。这种方式从根本上避免了"伪造行为本身成为指纹"的悖论。再加上专门为 Agent 设计的 REST API、无障碍快照、元素引用系统,它确实填补了一个空白:介于底层反检测引擎和上层 Agent 框架之间的中间层。

如果你正在构建需要浏览真实网页的 AI Agent,Camofox 值得一试。